<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //短路运算原理 当有多个表达(值)时，左边的表达式可以确定结果时，就不再继续运算右边的表达式的值;
        // 逻辑与 语法 表达式1&&表达式2 ，如果第一个表达式为真，则返回表达式2，反之，如果第一个表达式为假，则返回表达式1
        // --------------------------
        // 返回值是456
        console.log(123 && 456);
        // 返回值是0，因为0是假
        console.log(0 && 123);
        // 返回是0
        console.log(0 && 1 + 2 && 465 * 2);
        // 返回值是930
        console.log(1 + 2 && 465 * 2);
        // --------------------------------
        // 逻辑或短路运算 语法 表达式1||表达式2 ，如果表达式1为真，则返回表达式1 反之，如果表达式1为假，则返回表达式2。
        // 返回值是3
        console.log(1 + 2 || 465 * 2);
        // 返回值是930
        console.log(0 || 465 * 2);
        // 返回值是123
        console.log(123 || 456);
        // 返回值是123
        console.log(0 || 123 || 456);
        // 返回值是456
        console.log(0 || 0 || 456);
        // 返回值是0 和123
        var num = 0;
        console.log(123 || num++);
        console.log(num);
        var num1 = 0;
        var num2 = 2
        // 0
        console.log(0 || num1++);
        // 1
        console.log(num1);
        // 2
        console.log(num2);
    </script>
</body>

</html>